//===========================================================
//					es_fnt
//
//	Работа со шрифтами
//===========================================================

#include "es_fnt.h"
#include "es_spr.h"

// Менеджер шрифтов
cFontManager *FontManager;

// Конструктор/деструктор
cFontManager::cFontManager()
{
	activeFont = 0;
}
cFontManager::~cFontManager()
{
	for ( int i = 0;i < fonts.size();i++ )
		TTF_CloseFont(fonts[i].font); 
	TTF_Quit();
}

// Установка активного шрифта
void cFontManager::SetActiveFont(string name)
{
	for ( int i = 0;i < fonts.size();i++ )
		if ( fonts[i].name == name )
			activeFont = i;
}

// Установка цвета шрифта
void cFontManager::SetFontColor(SDL_Color newcolor)
{
	fonts[activeFont].color = newcolor;
}

// Загрузка шрифта
void cFontManager::LoadFont(char *path, int size)
{
	SDL_Color defcolor = {255, 255, 255};
	stFont newfont;
	newfont.name = getFileName(path);

	if ( (newfont.font = TTF_OpenFont(path, size)) == NULL )
		LogWrite(" !!!ERROR!!! - Can't load font '%s'", path);

	newfont.color = defcolor;
	fonts.push_back(newfont);
	SetActiveFont(newfont.name);
}

// Отрисовка текста
void cFontManager::DrawText(float x, float y, char *str, ...)
{
	char buffer[1024];

	memset(buffer, '\0', 1024);
	va_list argptr;
	va_start(argptr, str);
	_vsnprintf(buffer, 1024, str, argptr);
	va_end(argptr);

	SDL_Rect offset; 
	offset.x = x; 
	offset.y = y;
	SDL_Color black = {0, 0, 0};
	SDL_BlitSurface(TTF_RenderUTF8_Blended ( fonts[activeFont].font, buffer, fonts[activeFont].color), 
		NULL, Surf_Display, &offset);
}